﻿using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Utils;

namespace Service.Impl
{
    public class InterfaceServiceImpl: BaseServiceImpl<string, object>, InterfaceService
    {
        /// <summary>
        /// 进入接口上下文
        /// </summary>
        public string Interface()
        {
            // 校验用户输入接口名称
            if (this.CommandContext.InputCommandParams.ContainsKey("ifname"))
            {
                // 获取到用户输入的接口名称
                string ifname = this.CommandContext.InputCommandParams["ifname"].ToLower();
                // 获取到所有接口信息
                var list = NetworkUtil.ListNetworkInterface();
                // 过滤出与用户输入的接口名称匹配的接口
                var matchList = list.Where(inter => inter.Name.ToLower().Contains(ifname) || inter.Description.ToLower().Contains(ifname)).ToList();
                // 判断匹配到的结果是否是唯一
                if(matchList.Count == 1)
                {
                    // 进入接口视图
                    if (this.CommandContext.IsIfView)
                    {
                        this.CommandContext.Interface = matchList[0].Name;
                    }
                    else
                    {
                        this.CommandContext.EnterView(CommandView.COMMAND_VIEW_IF);
                        this.CommandContext.Interface = matchList[0].Name;
                    }
                    return null;
                }
                else
                {
                    if (matchList.Count == 0)
                        return "% 您输入的接口名称不正确!";
                    else
                    {
                        string inters = DisplayUtil.dispalyInterfaces(matchList);
                        return $"% 您输入的接口名称有多个匹配项，请再输入详细的接口名称\r\n{inters}";
                    }
                }
            }
            else
            {
                return "% 请输入必要的参数信息!";
            }
        }
    }
}
